package com.payment.service;

import com.payment.mapper.UserMapper;
import com.payment.model.UserInfo;
import com.payment.util.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    //注入数据接口
    @Autowired
    private UserMapper userMapper;

    /**
     * 获取所有用户信息
     * */
    public List<UserInfo> getAllUsers(){
        return userMapper.getAllUsers();
    }

    /**
     * 判断用户名是否存在
     * */
    private Boolean validateUserExist(UserInfo userInfo){
        if(userMapper.validateUserExist(userInfo)!=null){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 判断当前注册用户邮箱是否存在
     * */
    private Boolean validateUserEmailExist(UserInfo userInfo){
        if(userMapper.validateUserEmailExist(userInfo)!=null){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 判断上述两个方法后，用户名和邮箱均未被使用
     * 才可以注册新用户
     * */
    private Boolean insertUser(UserInfo userInfo){

        if(userMapper.insertUser(userInfo)>0){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 新用户注册方法
     * */
    public Response RegUser(UserInfo userInfo){
        //第一步，验证用户名是否存在，不存在也进行下一步
        if(!validateUserExist(userInfo)){
            //第二步，验证邮箱是否存在，不存在才可以注册
            if(!validateUserEmailExist(userInfo)){
                //第三步注册
                if(insertUser(userInfo)){
                    return new Response(200,"注册成功",null);
                }else{
                    return new Response(203,"注册失败",null);
                }
            }else {
                //邮箱存在
                return new Response(203,"邮箱已经被使用",null);
            }
        }else{
            //存在
            return new Response(203,"用户名已经被使用",null);
        }
    }

    /**
     * 登录验证方法
     * 验证成功后要修改用户登录时间
     * */
    public Response validateLogin(UserInfo userInfo){
        UserInfo u = userMapper.validateLogin(userInfo);
        if(u!=null){
            //登录成功 更新登录时间
            if(userMapper.updateLoginTime(userInfo)>0){
                //登录更新成功
                return  new Response(200,"登录成功",u);
            }else{
                return  new Response(203,"登录失败，时间更新失败",null);
            }
        }else{
            //登录失败
            return  new Response(203,"登录失败",null);
        }
    }
}
